
import { _decorator, Component, Sprite, SpriteFrame, resources, Node, SpriteAtlas } from 'cc';

const { ccclass, property } = _decorator;

/** 图片相关的设定 */
@ccclass('ImageSprite')
export class ImageSprite extends Component {
    @property({
        type: [SpriteFrame],
        tooltip: "图片的随机数组",
    })
    /// 存放图片的数组
    private textures: SpriteFrame[] = [];

    get diceCount() {
        return this.textures.length;
    }
    /// 生命周期函数加载
    async onLoad() {
        // await this.resetInEditor();
        // console.log('11');
        this.setRandom();
    }
    /// 重置图片
    async resetInEditor() {
        await this.loadTextures();
        this.setRandom();
    }

    update(deltaTime: number) {

    }

    /** 读取图片 */
    async loadTextures(): Promise<boolean> {
        /// 异步去读取文件的图片
        return new Promise<boolean>((resolve) => {

            // 加载 SpriteAtlas（图集），并且获取其中的一个 SpriteFrame
            // 注意 atlas 资源文件（plist）通常会和一个同名的图片文件（png）放在一个目录下, 所以需要在第二个参数指定资源类型
            // 加载 SpriteFrame，image 是 ImageAsset，spriteFrame 是 image/spriteFrame，texture 是 image/texture
            resources.loadDir('Texture/IconImages', SpriteFrame, (err, loadedTextures) => {
                if (err) {
                    console.error('加载图片失败:', err);
                    resolve(false);
                    return;
                }

                if (loadedTextures.length === 0) {
                    console.warn('加载的图片为空，请检查资源目录');
                    resolve(false);
                    return;
                }

    
                this.textures = loadedTextures; 
                console.log('加载图片成功:', loadedTextures);
                resolve(true);
            });
        });
    }

    /** 设置图片 */
    setDice(index: number) {
        console.log("给图片设置的数字",index);
        if (this.node) {
            const sprite = this.node.getComponent(Sprite);
            if (sprite) {
                sprite.spriteFrame = this.textures[index];
            }
        }
    }

    /** 随机生成 */
    setRandom() {
        if (this.textures.length > 0) {
            const randomIndex = Math.floor(Math.random() * this.textures.length);
            this.setDice(randomIndex);
        }
    }
}